前幾天有提到說為何要使用 gradio 的 4.32.1 版本,因為在今天要做的投票功能,使用舊的版本前端頁面的運作規則會比較符合我們的投票功能
在新增了投票功能後,開發者更能理解目前系統哪邊還需要改進,其實現方法也很簡單,只要定義 chatbot 的 like 行為即可
今天我們先來實作當使用者案讚的行為,當使用者點選「讚」的行為時,希望在下次問同樣的問題時,可以回覆出相同的結果
main.py
主要新增 like 的行為
chatbot.like(File.vote, inputs=[chatbot])
utils.py
Chat 中的 send_query 我們先檢查使用者詢問的問題是否有出現在 csv 中,File 中則新增一個函數,負責處理當使用者點選投票按鈕的行為
...
class Chat:
class Chat:
def send_query(search_content: str, history: list, temperature: float, k: int):
history.append([search_content, ""])
csv = pd.read_csv("saved_answer.csv")
if search_content in csv["Q"].values:
history[-1][1] = csv[csv["Q"] == search_content]["A"].values[0]
yield "", history
return True
...
class File:
...
def vote(event: gr.LikeData, history: list):
if event.liked:
if not os.path.exists("saved_answer.csv"):
pd.DataFrame(columns=["Q", "A"]).to_csv("saved_answer.csv", index=False)
df = pd.read_csv("saved_answer.csv")
data = {
"Q": history[-1][0],
"A": history[-1][1]
}
df = pd.concat([df, pd.DataFrame(data, index=[0])], ignore_index=True)
df.to_csv("saved_answer.csv", index=False, encoding="utf-8-sig")
gr.Info("謝謝您的反饋")
這時我們詢問一個問題後,在對話紀錄中出現了「👍」與「👎」的圖示,當我們點擊「👍」的圖示後右上角跳出一個彈出視窗寫著我們定義的gr.Info()
內的文字
同時確認 save_answer.csv
中的內容
這時我們如果再問同一個問題,就不經過 Qdrant 與 LLM 的處理了